/**
 * \file CFindFrm.h
 * \author Corentin Le Bail
 * \date 2009-2012
 * \brief Fichier de déclaration de la class CFindFrm
 */
//------------------------------------------------------------------------------
#ifndef __CFINDFRM_H__
#define __CFINDFRM_H__
//------------------------------------------------------------------------------
#include <QDialog>
#include <QStringList>
#include "ui_CFindFrm.h"
//------------------------------------------------------------------------------
/**
 * \class CFindFrm CFindFrm.h "CFindFrm.h"
 * \brief Classe de la fenêtre de recherche.
 */
class CFindFrm : public QDialog, private Ui::FindFrm
{
	Q_OBJECT
	public:
		/**
		 * \fn CFindFrm(QString table, QWidget *parent = 0, QString requete="", QSize size=QSize(), QPoint point=QPoint(), int colSort=0, Qt::SortOrder order=Qt::AscendingOrder, int goToLigne=0)
		 * \brief Constructeur
		 * \param[in] table Nom de la table
		 * \param[in] parent Référence vers un objet parent
		 * \param[in] requete Requete SQL
		 * \param[in] size Taille de la fenêtre de résultat
		 * \param[in] point Coordonnées de la fenêtre de résultat
		 * \param[in] colSort Index de la colonne de tri
		 * \param[in] order Sens du tri
		 * \param[in] goToLigne Numéro de la ligne à afficher lors de l'ouverture de la fenêtre de résultat
		 */
		CFindFrm(QString table, QWidget *parent = 0, QString requete="", QSize size=QSize(), QPoint point=QPoint(), int colSort=0, Qt::SortOrder order=Qt::AscendingOrder, int goToLigne=0);
		/**
		 * \fn QString getResult(void)
		 * \return Le résultat de la recherche
		 */
		QString getResult(void) { return _result; }
		/**
		 * \fn QString getRequete(void)
		 * \return La requête SQL
		 */
		QString getRequete(void) { return _requete; }
		/**
		 * \fn QString getRequeteHum(void)
		 * \return La requête SQL lisible par un humain
		 */
		QString getRequeteHum(void) { return _requeteHum; }
		/**
		 * \fn QSize getSizeResult(void)
		 * \return La taille de la fenêtre de résultat
		 */
		QSize getSizeResult(void) { return sizeFrmResult; }
		/**
		 * \fn QPoint getPosResult(void)
		 * \return Les coordonnées de la fenêtre de résultat
		 */
		QPoint getPosResult(void) { return posFrmResult; }
		/**
		 * \fn int getColSort(void)
		 * \return L'index de la colonne de tri
		 */
		int getColSort(void) { return _colSort; }
		/**
		 * \fn Qt::SortOrder getSortOrder(void)
		 * \return Le sens du tri
		 */
		Qt::SortOrder getSortOrder(void) { return _sortOrder; }
		/**
		 * \fn int getLastLigne(void)
		 * \return La première ligne visible de la grille de la fenêtre de recherche
		 */
		int getLastLigne(void) { return _goToLigne; }
	private:
		QString _table;
		QStringList *listChamp;
		QString _result;
		QStringList *header;
		QString _requete;
		QString _requeteHum;
		QSize sizeFrmResult;
		QPoint posFrmResult;
		int _colSort;
		Qt::SortOrder _sortOrder;
		int _goToLigne;
		
		void loadChamps(bool liaisons);
		void executeRequete(QString requete);
	private slots:
		void accept(void);
		void on_boutonRechercheAvance_clicked(bool checked = false);
		void on_chkLiaison_clicked(bool checked);
};
//------------------------------------------------------------------------------
#endif //__CFINDFRM_H__
//------------------------------------------------------------------------------